package com.nageoffer.jobtrain.projects.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.nageoffer.jobtrain.projects.dao.entity.UserContestDO;
import com.nageoffer.jobtrain.projects.dto.req.UserContestCancelEnrollReqDTO;
import com.nageoffer.jobtrain.projects.dto.req.UserContestEnrollReqDTO;
import com.nageoffer.jobtrain.projects.dto.resp.UserContestRespDTO;

import java.util.List;

/**
 * 用户报名竞赛接口层
 * author：唐晨
 */
public interface UserContestService extends IService<UserContestDO> {
    /**
     * 用户报名竞赛功能
     *
     * @param requestParam 用户报名竞赛请求入参
     */
    void createRemindContest(UserContestEnrollReqDTO requestParam);

    /**
     * 用户取消竞赛报名功能
     *
     * @param requestParam 用户取消报名竞赛请求入参
     */
    void cancelEnrollContest(UserContestCancelEnrollReqDTO requestParam);

    /**
     * 查询用户参加竞赛列表
     *
     * @return 用户报名竞赛列表返回结果
     */
    List<UserContestRespDTO> listEnrollContest();

    /**
     * 分页查询用户参加竞赛列表
     *
     * @param current 当前页
     * @param size    每页个数
     * @return 分页查询用户参加竞赛返回列表
     */
    IPage<UserContestRespDTO> pageListEnrollContest(Integer current, Integer size);

    /**
     * 用户提交竞赛功能
     *
     * @param contestId 竞赛ID
     */
    void finishContest(Long contestId);
}
